Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт
з лабораторної роботи №5
з дисципліни
“ Тестування програмних засобів ”
Львів 2012
Тема: Тестування «білого» ящика.
Мета: розглянути метод тестування «білого» ящика, продемонструвати методику на конкретному прикладі.
Виконання роботи:
Тестування «білого» ящика – це метод тестування програмного забезпечення, при якому тестується внутрішня структура роботи програми, на відміну від функціональності програми.
Методика тестування базується на тому, що розробник тестів має доступ до логіки роботи коду програми. Тобто розробник розуміє внутрішню архітектуру програми й може писати код, що пов'язаний з бібліотеками ПЗ, що тестується. Тести базуються на покритті коду, гілок, умов виконання. Юніт-тести є прикладами тестування «білого» ящика.
Синоніми: тестування прозорого, відкритого, скляного ящика, структурні тести, структурне тестування.
Тестування «білого ящика» - це методика аналізу вихідного коду програми. Існує три різновиди тестування: тестування на основі потоку керування програми, на основі потоку даних та мутаційне тестування.
При використанні першого типу тестується логіка програми, що представлена у вигляді графа керування: вершинами є оператори, а гілками - переходи між ними.
При тестування на основі потоку даних увага приділяється взаємозв'язкам між змінними. Виділяються вершини, у яких змінна ініціалізується та в яких використовується, і вивчаються переходи й взаємозв'язки між такими вершинами. Мутаційне тестування полягає у внесенні несправностей у вихідний код програми та порівняння роботи вихідної програми та програми мутанта. Оскільки здійснити вичерпне структурне тестування вкрай важко, необхідно вибрати такі критерії його повноти, які допускали б їхню просту перевірку й полегшували б цілеспрямований підбір тестів. Зупинимося на цьому докладніше.
Тестування «білого ящика» перевіряє внутрішню логіку програми, що дозволяє локалізувати несправності. На жаль, із зростанням розміру вихідного коду програми повноцінне тестування стає все складнішим. А спуск по представленій ієрархічній структурі взаємозв'язків критеріїв приводить до пропущення певного типу помилок і, відповідно, до втрати якості. Можливості застосування тестування для різних фаз тестування обмежені. Якщо для модульного тестування, в силу невеликих розмірів вихідного коду, представлені методи застосовні, хоча й з тими або іншими зазначеними вище складностями й обмеженнями, то для інтеграційного й системного тестування сфера застосування наведених класичних методів украй обмежена в силу різкого зростання вихідного коду або взагалі відсутності такого.
Приклад тестування «білого ящика»
В наступному прикладі ми будемо тестувати клас MyMathematicalClass, а саме конкретний метод exp(int x).
При тестуванні, використовуватимемо різні набори вхідних даних для кожного випадку, а також помилкові вхідні дані. Результати тестування конкретних значень виводитимуться на консоль.
Тестування проводитиметься в середовищі Eclipse з використанням фреймворку JUnit.
Програмний код, що тестується
package ua.edu.lp.ki_44.sopushynskyy;
/**
* MyMathematicalClass implements some mathematical functions
*
*
* */
public class MyMathematicalClass implements IMath {
/**
* exp - method implements mathematical Exp(x) function
*
* @param x - power of e
* @return e^x
*
* */
public double exp(int x) {
double ch = 1;
double zn = 1;
double sum = 0;
double k = 1.0;
int mn;
if (x >= 0)
mn = x;
else
mn = -x;
//розкладаємо в ряд тейлора
for (int i = 0; ch / zn > Double.MIN_NORMAL; i++) {
sum = sum + k * (ch / zn);
zn = zn * (i + 1);
ch = ch * mn;
}
if (x >= 0)
return sum;
else
return 1.0 / sum;
}
}
//----------------------------------------------------------------------------------------
package ua.edu.lp.ki_44.sopushynskyy;
/**
* Public Interface IMath
*
* Interface is used to create classes to
* calcul...